//: C25:DDTrashPrototypeInit.cpp {O}
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
#include "TypedBin.h"
#include "Aluminum.h"
#include "Paper.h"
#include "Glass.h"
#include "Cardboard.h"

std::vector<Trash*> Trash::prototypes;

class TrashPrototypeInit
{
    DD<Aluminum> a;
    DD<Paper> p;
    DD<Glass> g;
    DD<Cardboard> c;
    TrashPrototypeInit() {
        Trash::prototypes.push_back(&a);
        Trash::prototypes.push_back(&p);
        Trash::prototypes.push_back(&g);
        Trash::prototypes.push_back(&c);
    }
    static TrashPrototypeInit singleton;
};

TrashPrototypeInit
TrashPrototypeInit::singleton; ///:~
